package com.vencent.spring.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import com.vencent.spring.anno.Boy;
import com.vencent.spring.anno.Girl;
import com.vencent.spring.bean.Person;

/**
 * 避免歧义性， 一个接口多个实现
 * 首先你可以使用@Primary来标注那个是首选Bean， 这种方式简单， 但多个@Primary作用同一个接口实现类还是会出现歧义性
 * 其次你可以使用@Qualifier注解，这个注解是使用限定符的主要方式(你还可以基于此，自定义)，
 * demo:
 * @Autowired
 * @Qualifier("peo")
 * private People peo;
 * 只有bean的id是peo才能注入， 但是这样注解的属性是bean的Id， 如果修改了bean的id， 那么就会带来不必要的修改，
 * 所以采用自定义限定符(基于注解Qualifier)
 * 
 * @author 1d
 *
 */
@Configuration
public class PersonConfig {
	/**
	 * 限定符也可以配合@Component来使用
	 * @return
	 */
	@Bean
	@Boy
	public Person person1(){
		return new Person("Wang");
	}
	
	@Bean
	@Girl
	public Person person2(){
		return new Person("Lee");
	}
}
